


    <template>
        <el-drawer :title="!dataForm.enterprisecreditcode ? '新建' : '编辑'" :visible.sync="visible"
                   :wrapperClosable="false" size="60%" append-to-body
                   class="JNPF-common-drawer">
        <div class="JNPF-flex-main">
        <div class="dynamicForm ">
    <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small" label-width="100px" label-position="right" >
    <template v-if="!loading">
        <!-- 具体表单 -->
            <el-col :span="24" >
                <jnpf-form-tip-item>
                    <JnpfText 
 :textStyle='{"color":"#000000","font-weight":"bold","text-decoration":"none","font-size":24,"line-height":32,"font-style":"normal","text-align":"center"}' content="详情">
                </JnpfText>
                </jnpf-form-tip-item>
            </el-col>
            <el-col :span="24" >
                <jnpf-form-tip-item>
                    <JnpfText 
 :textStyle='{"color":"#000000","font-weight":"bold","text-decoration":"none","font-size":24,"line-height":32,"font-style":"normal","text-align":"left"}' content="一、基本信息">
                </JnpfText>
                </jnpf-form-tip-item>
            </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="单位名称"   prop="enterpriseName" >
        <JnpfInput   v-model="dataForm.enterpriseName" @change="changeData('enterpriseName',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="信用代码"   prop="enterpriseCreditCode" >
        <JnpfInput   v-model="dataForm.enterpriseCreditCode" @change="changeData('enterpriseCreditCode',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="单位地址"   prop="enterpriseAddress" >
        <JnpfInput   v-model="dataForm.enterpriseAddress" @change="changeData('enterpriseAddress',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>

        <el-col :span="24" >
        <jnpf-form-tip-item
 label="成立时间"   prop="enterpriseStart" >
        <JnpfDatePicker   v-model="dataForm.enterpriseStart" @change="changeData('enterpriseStart',-1)" 
 :startTime="dateTime(false,1,1,'','')"  :endTime="dateTime(false,1,1,'','')"  placeholder="请选择"  clearable  :style='{"width":"100%"}' type="date"  format="yyyy-MM-dd" >
    </JnpfDatePicker>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="注册资本"   prop="registeredCapital" >
        <JnpfInputNumber   v-model="dataForm.registeredCapital" @change="changeData('registeredCapital',-1)" 
 placeholder="请输入"  addonAfter="万元"  :step="1" >
    </JnpfInputNumber>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="8" >
        <jnpf-form-tip-item
 label="联系人"   prop="contactPerson" >
        <JnpfInput   v-model="dataForm.contactPerson" @change="changeData('contactPerson',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="8" >
        <jnpf-form-tip-item
 label="联系方式"   prop="contactInformation" >
        <JnpfInput   v-model="dataForm.contactInformation" @change="changeData('contactInformation',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="8" >
        <jnpf-form-tip-item
 label="电子邮箱"   prop="email" >
        <JnpfInput   v-model="dataForm.email" @change="changeData('email',-1)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="单位简介"   prop="companyNote" >
        <JnpfTextarea   v-model="dataForm.companyNote" @change="changeData('companyNote',-1)" 
 placeholder="请输入"  :style='{"width":"100%"}' true  type="textarea"  :autosize='{"minRows":4,"maxRows":4}' >
    </JnpfTextarea>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="文件上传"   prop="file" >
        <JnpfUploadFile   v-model="dataForm.file" @change="changeData('file',-1)" 
 :fileSize="10" sizeUnit="MB"  :limit="9"  pathType="defaultPath"  :isAccount="0"  buttonText="点击上传" >
    </JnpfUploadFile>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24"  >
            <jnpf-form-tip-item label-width="0">
                    <div class="JNPF-common-title">
                        <h2>产品信息</h2>
                    </div>
                <el-table :data="dataForm.fz_supply_market_productList" size='mini' >
                    <el-table-column type="index" width="50" label="序号" align="center" />
        <el-table-column
 label="产品名称"   prop="productName" >
                <template slot="header"  v-if="false"  >
                    <span class="required-sign"  >*</span>产品名称
                </template>
        <template slot-scope="scope">
        <JnpfInput   v-model="scope.row.productName" @change="changeData('fz_supply_market_product-productName',scope.$index)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
            </template>
    </el-table-column>
        <el-table-column
 label="服务行业"   prop="serviceIndustry" >
                <template slot="header"  v-if="false"  >
                    <span class="required-sign"  >*</span>服务行业
                </template>
        <template slot-scope="scope">
        <JnpfSelect   v-model="scope.row.serviceIndustry" @change="changeData('fz_supply_market_product-serviceIndustry',scope.$index)" 
 placeholder="请选择"  clearable  :style='{"width":"100%"}' :options="fz_supply_market_productserviceIndustryOptions" :props="fz_supply_market_productserviceIndustryProps" >
    </JnpfSelect>
            </template>
    </el-table-column>
        <el-table-column
 label="产品类别(大类)"   prop="productType" >
                <template slot="header"  v-if="false"  >
                    <span class="required-sign"  >*</span>产品类别(大类)
                </template>
        <template slot-scope="scope">
        <JnpfSelect   v-model="scope.row.productType" @change="changeData('fz_supply_market_product-productType',scope.$index)" 
 placeholder="请选择"  clearable  :style='{"width":"100%"}' :options="fz_supply_market_productproductTypeOptions" :props="fz_supply_market_productproductTypeProps" >
    </JnpfSelect>
            </template>
    </el-table-column>
                </el-table>
            </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24"  >
            <jnpf-form-tip-item label-width="0">
                    <div class="JNPF-common-title">
                        <h2>服务商信息</h2>
                    </div>
                <el-table :data="dataForm.fz_supply_market_regList" size='mini' >
                    <el-table-column type="index" width="50" label="序号" align="center" />
        <el-table-column
 label="服务商类型"   prop="serverType" >
                <template slot="header"  v-if="false"  >
                    <span class="required-sign"  >*</span>服务商类型
                </template>
        <template slot-scope="scope">
        <JnpfInput   v-model="scope.row.serverType" @change="changeData('fz_supply_market_reg-serverType',scope.$index)" 
 placeholder="请输入"  clearable  :style='{"width":"100%"}'>
    </JnpfInput>
            </template>
    </el-table-column>
                        <el-table-column label="操作" width="50"  >
                            <template slot-scope="scope">
                                <el-button size="mini" type="text" class="JNPF-table-delBtn" @click="delfz_supply_market_regList(scope.$index)">删除</el-button>
                            </template>
                        </el-table-column>
                </el-table>
                    <div class="table-actions" @click="addfz_supply_market_regList()" >
                        <el-button type="text" icon="el-icon-plus">添加</el-button>
                    </div>
            </jnpf-form-tip-item>
        </el-col>
        <!-- 表单结束 -->
    </template>
    </el-form>
    <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
                  ref="selectDialog" @select="addForSelect" @close="selectDialogVisible=false"/>
    </div>
    <div class="drawer-footer">
        <el-button @click="visible = false"> 取 消</el-button>
        <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确 定</el-button>
    </div>
    </div>
    </el-drawer>
    </template>


<script>
    import request from '@/utils/request'
    import {mapGetters} from "vuex";
    import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
    import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
    import { getDefaultCurrentValueUserId } from '@/api/permission/user'
    import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
    import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
    import { thousandsFormat } from "@/components/Generator/utils/index"
    export default {
        components: { },
        props: [],
        data() {
        return {
            dataFormSubmitType: 0,
            continueBtnLoading: false,
            index: 0,
            prevDis: false,
            nextDis: false,
            allList: [],
            visible: false,
            loading: false,
            btnLoading: false,
            formRef: 'formRef',
            setting:{},
            eventType: '',
            userBoxVisible:false,
            selectDialogVisible: false,
            currTableConf:{},
            dataValueAll:{},
            addTableConf:{
                            fz_supply_market_productList :{"popupType":"dialog","hasPage":true,"popupTitle":"选择数据","pageSize":20,"columnOptions":[],"interfaceId":"","interfaceName":"","relationOptions":[],"templateJson":[],"popupWidth":"800px"},
                            fz_supply_market_regList :{"popupType":"dialog","hasPage":true,"popupTitle":"选择数据","pageSize":20,"columnOptions":[],"interfaceId":"","interfaceName":"","relationOptions":[],"templateJson":[],"popupWidth":"800px"},
            },
            //可选范围默认值
            ableAll:{
            },
        tableRows:{
                    fz_supply_market_productList:{
                            productName : '',
                                productNameOptions:[],
                                serviceIndustryOptions:[],
                                productTypeOptions:[],
                    enabledmark:undefined
            },
                    fz_supply_market_regList:{
                            serverType : '',
                                serverTypeOptions:[],
                    enabledmark:undefined
            },
        },
            Vmodel:"",
            currVmodel:"",
            dataForm: {
                                enterpriseName : undefined,
                                enterpriseCreditCode : undefined,
                                enterpriseAddress : undefined,
                                enterpriseStart : undefined,
                                registeredCapital : undefined,
                                contactPerson : undefined,
                                contactInformation : undefined,
                                email : undefined,
                                companyNote : undefined,
                                    file : [],
                                    creatoruserid : undefined,
                                    creatortime : undefined,
                                    lastmodifyuserid : undefined,
                                    lastmodifytime : undefined,
                        fz_supply_market_productList:[],
                        fz_supply_market_regList:[],
            },
            tableRequiredData: {},
            dataRule:
            {
                            enterpriseName: [
                                {
                                    required: true,
                                    message: '请输入',
                                    trigger: 'blur'
                                },
                        ],
                            enterpriseCreditCode: [
                                {
                                    required: true,
                                    message: '请输入',
                                    trigger: 'blur'
                                },
                        ],
                            enterpriseAddress: [
                                {
                                    required: true,
                                    message: '请输入',
                                    trigger: 'blur'
                                },
                        ],
                            contactPerson: [
                                {
                                    required: true,
                                    message: '请输入',
                                    trigger: 'blur'
                                },
                        ],
                            contactInformation: [
                                {
                                    required: true,
                                    message: '请输入',
                                    trigger: 'blur'
                                },
                        ],
            },
                                fz_supply_market_productserviceIndustryOptions:[{"fullName":"汽车制造业","id":"1"},{"fullName":"轻工纺织业","id":"2"},{"fullName":"计算机、通信和其他电子设备制造业","id":"3"}],
                                fz_supply_market_productserviceIndustryProps:{"label":"fullName","value":"id"  },
                                fz_supply_market_productproductTypeOptions:[{"fullName":"软件系统及SaaS化应用类","id":"1"},{"fullName":"基础设施类","id":"2"},{"fullName":"生产设备类","id":"3"}],
                                fz_supply_market_productproductTypeProps:{"label":"fullName","value":"id"  },
            childIndex:-1,
                    isEdit:false,
                    interfaceRes: {
                        enterpriseName:[] ,
                        enterpriseCreditCode:[] ,
                        enterpriseAddress:[] ,
                        enterpriseStart:[] ,
                        registeredCapital:[] ,
                        contactPerson:[] ,
                        contactInformation:[] ,
                        email:[] ,
                        companyNote:[] ,
                        file:[] ,
                        creatoruserid:[] ,
                        creatortime:[] ,
                        lastmodifyuserid:[] ,
                        lastmodifytime:[] ,
                            fz_supply_market_productproductName: [] ,
                            fz_supply_market_productserviceIndustry: [] ,
                            fz_supply_market_productproductType: [] ,
                            fz_supply_market_regserverType: [] ,
            },
        }
        },
        computed: {
            ...mapGetters(['userInfo'])
        },
        watch: {},
        created() {
            this.dataAll()
            this.initDefaultData()
            this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
        },
        mounted() {},
        methods: {
            prev() {
                this.index--
                if (this.index === 0) {
                    this.prevDis = true
                }
                this.nextDis = false
                for (let index = 0; index < this.allList.length; index++) {
                    const element = this.allList[index];
                    if (this.index == index) {
                        this.getInfo(element.enterprisecreditcode)
                    }
                }
            },
            next() {
                this.index++
                if (this.index === this.allList.length - 1) {
                    this.nextDis = true
                }
                this.prevDis = false
                for (let index = 0; index < this.allList.length; index++) {
                    const element = this.allList[index];
                    if (this.index == index) {
                        this.getInfo(element.enterprisecreditcode)
                    }
                }
            },
            getInfo(id) {
                request({
                    url: '/api/example/Fz_supply_market/'+ id,
                    method: 'get'
                }).then(res => {
                    this.dataInfo(res.data)
                });
            },
            goBack() {
                this.visible = false
                this.$emit('refreshDataList', true)
            },
            changeData(model, index) {
                this.isEdit = false
                this.childIndex = index
                let modelAll = model.split("-");
                let faceMode = "";
                for (let i = 0; i < modelAll.length; i++) {
                    faceMode += modelAll[i];
                }
                for (let key in this.interfaceRes) {
                    if (key != faceMode) {
                        let faceReList = this.interfaceRes[key]
                        for (let i = 0; i < faceReList.length; i++) {
                            if (faceReList[i].relationField == model) {
                                let options = 'get' + key + 'Options';
                                if(this[options]){
                                    this[options]()
                                }
                                this.changeData(key, index)
                            }
                        }
                    }
                }
            },
            changeDataFormData(type, data, model,index,defaultValue) {
                if(!this.isEdit) {
                    if (type == 2) {
                        for (let i = 0; i < this.dataForm[data].length; i++) {
                            if (index == -1) {
                                this.dataForm[data][i][model] = defaultValue
                            } else if (index == i) {
                                this.dataForm[data][i][model] = defaultValue
                            }
                        }
                    } else {
                        this.dataForm[data] = defaultValue
                    }
                }
            },
            dataAll(){
            },
                fz_supply_market_productExist() {
                let isOk = true;
            for(let i=0;i<this.dataForm.fz_supply_market_productList.length;i++){
                const e = this.dataForm.fz_supply_market_productList[i];
            }
                return isOk;
            },
                fz_supply_market_regExist() {
                let isOk = true;
            for(let i=0;i<this.dataForm.fz_supply_market_regList.length;i++){
                const e = this.dataForm.fz_supply_market_regList[i];
            }
                return isOk;
            },
            clearData(){
                this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
            },
            init(id,isDetail,allList) {
                this.prevDis = false
                this.nextDis = false
                this.allList = allList || []
                if (allList.length) {
                    this.index = this.allList.findIndex(item => item.enterprisecreditcode === id)
                    if (this.index == 0) {
                        this.prevDis = true
                    }
                    if (this.index == this.allList.length - 1) {
                        this.nextDis = true
                    }
                } else {
                    this.prevDis = true
                    this.nextDis = true
                }
                this.dataForm.enterprisecreditcode = id || 0;
                this.visible = true;
                this.$nextTick(() => {
                    if(this.dataForm.enterprisecreditcode){
                        this.loading = true
                        request({
                            url: '/api/example/Fz_supply_market/'+this.dataForm.enterprisecreditcode,
                            method: 'get'
                        }).then(res => {
                            this.dataInfo(res.data)
                            this.loading = false
                        });
                    }else{
                        this.clearData()
                        this.initDefaultData()
                    }
                });
                this.$store.commit('generator/UPDATE_RELATION_DATA', {})
            },
            //初始化默认数据
            initDefaultData() {

            },
            // 表单提交
            dataFormSubmit(type) {
                this.dataFormSubmitType = type ? type : 0
                this.$refs['formRef'].validate((valid) => {
                    if (valid) {
                            if (!this.fz_supply_market_productExist()) return
                            if (!this.fz_supply_market_regExist()) return
                        this.request()
                    }
                })
            },
            request() {
                let _data =this.dataList()
                if (this.dataFormSubmitType == 2) {
                    this.continueBtnLoading = true
                } else {
                    this.btnLoading = true
                }
                if (!this.dataForm.enterprisecreditcode) {
                    request({
                        url: '/api/example/Fz_supply_market',
                        method: 'post',
                        data: _data
                    }).then((res) => {
                        this.$message({
                            message: res.msg,
                            type: 'success',
                            duration: 1000,
                            onClose: () => {
                                if (this.dataFormSubmitType == 2) {
                                    this.$nextTick(() => {
                                        this.clearData()
                                        this.initDefaultData()
                                    })
                                    this.continueBtnLoading = false
                                    return
                                }
                                this.visible = false
                                this.btnLoading = false
                                this.$emit('refresh', true)
                            }
                        })
                    }).catch(()=>{
                        this.btnLoading = false
                        this.continueBtnLoading = false
                    })
                }else{
                    request({
                        url: '/api/example/Fz_supply_market/'+this.dataForm.enterprisecreditcode,
                        method: 'PUT',
                        data: _data
                    }).then((res) => {
                        this.$message({
                            message: res.msg,
                            type: 'success',
                            duration: 1000,
                            onClose: () => {
                                if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
                                this.visible = false
                                this.btnLoading = false
                                this.$emit('refresh', true)
                            }
                        })
                    }).catch(()=>{
                        this.btnLoading = false
                        this.continueBtnLoading = false
                    })
                }
            },
                addfz_supply_market_productList(){
                let item = {
                            productName:undefined,
                            serviceIndustry:'',
                            productType:'',
            }
                this.getfz_supply_market_productList(item)
            },
                delfz_supply_market_productList(index) {
                this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
                    type: 'warning'
                }).then(() => {
                    this.dataForm.fz_supply_market_productList.splice(index, 1);
                }).catch(() => {
                });
            },
                getfz_supply_market_productList(value){
                let item={...this.tableRows.fz_supply_market_productList,...value}
                this.dataForm.fz_supply_market_productList.push(item)
                this.childIndex=this.dataForm.fz_supply_market_productList.length-1
                this.isEdit = true
                this.isEdit = false
                this.childIndex = -1
            },
                addfz_supply_market_regList(){
                let item = {
                            serverType:undefined,
            }
                this.getfz_supply_market_regList(item)
            },
                delfz_supply_market_regList(index) {
                this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
                    type: 'warning'
                }).then(() => {
                    this.dataForm.fz_supply_market_regList.splice(index, 1);
                }).catch(() => {
                });
            },
                getfz_supply_market_regList(value){
                let item={...this.tableRows.fz_supply_market_regList,...value}
                this.dataForm.fz_supply_market_regList.push(item)
                this.childIndex=this.dataForm.fz_supply_market_regList.length-1
                this.isEdit = true
                this.isEdit = false
                this.childIndex = -1
            },
            openSelectDialog(key) {
                this.currTableConf=this.addTableConf[key]
                this.currVmodel=key
                this.selectDialogVisible = true
                this.$nextTick(() => {
                    this.$refs.selectDialog.init()
                })
            },
            addForSelect(data) {
                for (let i = 0; i < data.length; i++) {
                    let t = data[i]
                    if(this['get'+this.currVmodel]){
                        this['get'+this.currVmodel](t)
                    }
                }
            },
            dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
                let timeDataValue = null;
                let timeValue = Number(timeValueData)
                if (timeRule) {
                    if (timeType == 1) {
                        timeDataValue = timeValue
                    } else if (timeType == 2) {
                        timeDataValue = dataValue
                    } else if (timeType == 3) {
                        timeDataValue = new Date().getTime()
                    } else if (timeType == 4) {
                        let previousDate = '';
                        if (timeTarget == 1 || timeTarget == 2) {
                            previousDate = getDateDay(timeTarget, timeType, timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else if (timeTarget == 3) {
                            previousDate = getBeforeData(timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else {
                            timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
                        }
                    } else if (timeType == 5) {
                        let previousDate = '';
                        if (timeTarget == 1 || timeTarget == 2) {
                            previousDate = getDateDay(timeTarget, timeType, timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else if (timeTarget == 3) {
                            previousDate = getLaterData(timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else {
                            timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
                        }
                    }
                }
                return timeDataValue;
            },
            time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
                let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
                let timeDataValue = null
                if (timeRule) {
                    if (timeType == 1) {
                        timeDataValue = timeValue || '00:00:00'
                        if (timeDataValue.split(':').length == 3) {
                            timeDataValue = timeDataValue
                        } else {
                            timeDataValue = timeDataValue + ':00'
                        }
                    } else if (timeType == 2) {
                        timeDataValue = dataValue
                    } else if (timeType == 3) {
                        timeDataValue = this.jnpf.toDate(new Date(), format)
                    } else if (timeType == 4) {
                        let previousDate = '';
                        previousDate = getBeforeTime(timeTarget, timeValue)
                        timeDataValue = this.jnpf.toDate(previousDate, format)
                    } else if (timeType == 5) {
                        let previousDate = '';
                        previousDate = getLaterTime(timeTarget, timeValue)
                        timeDataValue = this.jnpf.toDate(previousDate, format)
                    }
                }
                return timeDataValue;
            },
            dataList(){
                var _data = this.dataForm;
                return _data;
            },
            dataInfo(dataAll){
                let _dataAll =dataAll
                this.dataForm = _dataAll
                this.isEdit = true
                this.dataAll()
                    for(let i=0;i<_dataAll.fz_supply_market_productList.length;i++){
                        this.childIndex = i
                    }
                    for(let i=0;i<_dataAll.fz_supply_market_regList.length;i++){
                        this.childIndex = i
                    }
                this.childIndex=-1
            },
        },
    }

</script>
